﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DataLayer.Database;
using DataLayer.Class;
using DataLayer;

namespace WinProgProject2
{
    public partial class MasaIslemleri : Form
    {
        Rezervasyon rezervasyon;
        ErrorLogService.Service1Client sv = new ErrorLogService.Service1Client();
        private bool yeniKayit = false;

        

        public MasaIslemleri()
        {
            InitializeComponent();
        }

        public MasaIslemleri(Rezervasyon r)
        {
            
            InitializeComponent();
            rezervasyon = r;

        }

        private void lvMasalar_SelectedIndexChanged(object sender, EventArgs e)
        {

                try
                {
                    if (lvMasalar.SelectedItems.Count > 0)
                    {
                        Masa seciliMasa = lvMasalar.SelectedItems[0].Tag as Masa;
                        cmbMasaTipi.SelectedItem = seciliMasa.MasaTipi;
                        nudKapasite.Value = seciliMasa.Kapasite;
                    }
                    else
                    {
                        temizle();
                        gbxInput.Enabled = false;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    sv.errorEkle(Session.kullaniciKodu, ex.Message, 6, "Masa İşlemleri");
                }


        }

        private void MasaIslemleri_Load(object sender, EventArgs e)
        {
            try
            {
                filtreStripComboBox.SelectedIndex = 0;

                foreach (MasaTipi mt in MasaDB.tumMasaTipleriniCek())
                    cmbMasaTipi.Items.Add(mt);

                lvMasalar.LargeImageList = masaResimleri;
                lvMasalar.SmallImageList = masaResimleri;

                if (cmbMasaTipi.Items.Count > 0)
                    cmbMasaTipi.SelectedIndex = 0;

                gbxInput.Enabled = false;

                lvDoldur("", -1,null);
            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 6, "Masa İşlemleri");
            }
        }

        public void lvDoldur(string aranan, int kriter,DateTime? tarih)
        {
            lvMasalar.Items.Clear();

            foreach (Masa m in MasaDB.tumMasalariCek(aranan, kriter,tarih))
            {
                ListViewItem lvItem = new ListViewItem("Masa ID: "+ m.MasaID.ToString());
                lvItem.SubItems.Add("Kapasite: "+ m.Kapasite.ToString());
                if (m.RezerveMi)
                    lvItem.SubItems.Add("Dolu");
                else
                    lvItem.SubItems.Add("Boş");

                if (lvMasalar.Groups[m.MasaTipi.MasaTipiID.ToString()] == null)
                {
                    lvMasalar.Groups.Add(m.MasaTipi.MasaTipiID.ToString(), m.MasaTipi.TipAdi);
                    masaResimleri.Images.Add(m.MasaTipi.ResimYolu, new Bitmap(m.MasaTipi.ResimYolu));
                }

                lvItem.Tag = m;

                lvItem.Group = lvMasalar.Groups[m.MasaTipi.MasaTipiID.ToString()];
                lvItem.ImageKey = m.MasaTipi.ResimYolu;

                lvMasalar.Items.Add(lvItem);
            }

        }
        private void temizle()
        {
            
            if (cmbMasaTipi.Items.Count > 0)
                cmbMasaTipi.SelectedIndex = 0;

            lvMasalar.SelectedItems.Clear();
            nudKapasite.Value = 0;
        }

        private void ekleToolStripButton_Click(object sender, EventArgs e)
        {
            yeniKayit = true;
            temizle();
            gbxInput.Enabled = true;
        }

        private void guncelleToolStripButton_Click(object sender, EventArgs e)
        {
            gbxInput.Enabled = true;
            yeniKayit = false;
        }

        private void silToolStripButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (lvMasalar.SelectedItems.Count == 0)
                    throw new Exception("Hiçbir kayıt seçmediniz.");

                if ((lvMasalar.SelectedItems[0].Tag as Masa).RezerveMi)
                    throw new Exception("Rezerve masayı silemezsiniz.");

                DialogResult result = MessageBox.Show(null, (lvMasalar.SelectedItems[0].Tag as Masa).MasaID + " numaralı masayı silmek istediğinizden emin misiniz?", "Onay", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (result == DialogResult.Yes)
                    (lvMasalar.SelectedItems[0].Tag as Masa).sil();

                lvDoldur("", -1,null);
                temizle();
                gbxInput.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 3, "Masa İşlemleri");
            }
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            try
            {

                if (yeniKayit)
                {
                    new Masa(Convert.ToInt32(nudKapasite.Value),cmbMasaTipi.SelectedItem as MasaTipi).ekle();
                }
                else
                {
                    new Masa((lvMasalar.SelectedItems[0].Tag as Masa).MasaID,Convert.ToInt32(nudKapasite.Value),(lvMasalar.SelectedItems[0].Tag as Masa).RezerveMi,cmbMasaTipi.SelectedItem as MasaTipi).guncelle();
                }
                lvDoldur("", -1,null);
                temizle();
                gbxInput.Enabled = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(null, ex.Message + "(" + ex.InnerException + ")", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if(yeniKayit)
                sv.errorEkle(Session.kullaniciKodu, ex.Message, 1, "Masa İşlemleri");
                else sv.errorEkle(Session.kullaniciKodu, ex.Message, 2, "Masa İşlemleri");
            }
        }

        private void txtMusteriArama_Click(object sender, EventArgs e)
        {
            txtMusteriArama.Text = "";
            txtMusteriArama.ForeColor = Color.Coral;
        }

        private void txtMusteriArama_TextChanged(object sender, EventArgs e)
        {
            lvDoldur(txtMusteriArama.Text, filtreStripComboBox.SelectedIndex,null);
        }

        public ListView LvMasalar
        {
            get
            {
                return lvMasalar;
            }
        }
        public ImageList MasaResimleri
        {
            get
            {
                return masaResimleri;
            }
        }

        private void btnTemizle_Click(object sender, EventArgs e)
        {
            temizle();
        }
    }
}
